Thực đơn
AWK Cú phápDạng cú pháp cơ bản của Awk là:
mẫu_1 { câu lệnh_1 };mẫu_2 { câu lệnh_2 };...
Theo đó máy tính sẽ dò từng dòng trong file chữ và so sánh với mẫu 1. Nếu khớp, câu lệnh 1 được thực hiện. Tiếp theo máy tính so sánh dòng chữ với mẫu 2. Nếu khớp, câu lệnh 2 được thực hiện; và cứ như vậy.
Để minh họa ta lấy ví dụ một file hồ sơ sức khỏe có nội dung như sau (mỗi người có thông tin giới tính và chiều cao)
An nam 165
Mai nu 158
Minh nam 170
Minh nu 162
Thanh nam 169
Với một file như vậy các cột được Awk xem như các trường và được đặt tên $1
cho cột thứ nhất, $2
cho cột thứ hai, $3
cho cột thứ ba,...
Một mẫu chính là biểu thức so sánh (biểu thức logic) giữa tên cột và giá trị. Chẳng hạn:
$1 == "Minh"
$2 == "nam"
Khi gặp một mẫu, máy tính hiểu rằng chỉ thực hiện câu lệnh với những dòng tương ứng với mẫu đó. Trong trường hợp thực hiện lệnh với mọi dòng trong file chữ thì mẫu được bỏ qua, chỉ cần viết:
{câu lệnh}
Đối với mẫu, còn có thể dùng các toán tử logic như ||
(hoặc), &&
(và). Để trình bày được đơn giản, ở đây ta không đề cập đến.
Câu lệnh thường dùng trong Awk là lệnh in ra màn hình (print
). Chẳng hạn:
{print $1}
{print $3 / 100}
Trong trường hợp in đầy đủ cả dòng thì ta bỏ qua phần {câu lệnh}
.
Câu lệnh của Awk còn bao gồm cả những cấu trúc điều khiển (lặp, rẽ nhánh) thường gặp trong các ngôn ngữ lập trình. Ở đây, để đơn giản ta không đề cập đến.
Ngoài ra, nếu có nhiều câu lệnh trong một cặp { }
thì chúng cần được phân tách bởi dấu chấm phẩy.
$2 == "nam" { print $1, $3 }
{print $1, $2, $3 / 100}
print
)$1 == "Minh"
Thông thường với mỗi dòng mẫu {câu lệnh}
máy sẽ kiểm tra đối chiếu với tất cả các dòng trong file chữ, lần lượt từ trên xuống dưới. Nếu dòng nào khớp với mẫu thì thực hiện câu lệnh. Awk cho phép một ngoại lệ là được thực hiện một số câu lệnh trước và sau khi khi rà soát file chữ. Các câu lệnh ngoại lệ này được đặt kèm với BEGIN { }
và END { }
.
Chẳng hạn cần một dòng tiêu đề ở trên cùng, tiếp theo là in ra các con số chiều cao của những người nữ giới (giấu tên); cuối cùng là tổng kết có bao nhiêu người là nữ và chiều cao trung bình là bao nhiêu:
BEGIN { print "So lieu chieu cao cua nu gioi " }$1 = "nu" { print $3; sonu = sonu + 1; caotb = caotb + $3 }END {print "Tong so nu la: %d\n voi chieu cao trung binh %8.2f m.", sonu, caotb*100.0/sonu }
Các biến trong Awk có kiểu động, không cần khai báo và tự động lấy các giá trị mặc định (bằng 0 với kiểu số, bằng xâu rỗng đối với chuỗi ký tự).
Trong ví dụ trên hai biến là sonu
và caotb
được dùng đến mà không cần được khởi tạo trong phần BEGIN
.
Thực đơn
AWK Cú phápLiên quan
AWK Awkwafina Aikido Akagi (tàu sân bay Nhật) Alken AKB48 AKMU Alkan AK-12 AwakenTài liệu tham khảo
WikiPedia: AWK http://www.techworld.com.au/index.php/id;172653421... http://cm.bell-labs.com/cm/cs/awkbook/